home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / rb / jydrv220.lzh / STICK2.S < prev   
Text File  |  1999-08-09  |  12KB  |  515 lines

  1. *
  2. * JOYDRV X-BASICライブラリ version 2.20
  3. * Copyright 1995,96,97,98,99 by HUYE
  4. *
  5. .cpu    68000
  6. .text
  7. INFO_TBL:
  8.     .dc.l    FNC_INIT            * 初期化ルーチン
  9.     .dc.l    RUN_FNC                * RUN時サブルーチン
  10.     .dc.l    END_FNC                * END時サブルーチン
  11.     .dc.l    EXIT_BASIC            * OS復帰時サブルーチン
  12.     .dc.l    BREAK_EXEC            * BREAK時サブルーチン
  13.     .dc.l    CTRLD_EXEC            * CTRL+D時サブルーチン
  14.     .dc.l    RES1_AREA            * 予備
  15.     .dc.l    RES2_AREA            * 予備
  16.     .dc.l    TOKEN_TBL            * トークンテーブル
  17.     .dc.l    PARM_TBL            * パラメータテーブル
  18.     .dc.l    EXEC_TBL            * 実行アドレステーブル
  19.     .dc.l    0,0,0,0,0            * 予備
  20.  
  21. FNC_INIT:
  22. RUN_FNC:
  23. END_FNC:
  24. EXIT_BASIC:
  25. BREAK_EXEC:
  26. CTRLD_EXEC:
  27. RES1_AREA:
  28. RES2_AREA:
  29.     rts
  30.  
  31. get_joy_data:
  32.     move.l    $c(a7),d1            * ジョイスティック番号取得
  33.     subq.l    #1,d1
  34.     moveq.l    #$3b,d0
  35.     trap    #15                * ジョイスティック読み込み
  36.     not.l    d0
  37.     bra    parm_set
  38.  
  39. get_joydrv:
  40.     bsr    joydrv_sts
  41.     bra    parm_set
  42.  
  43. joydrv_sts:
  44.     move.w    #$ff00,d1
  45.     moveq.l    #1,d2
  46.     moveq.l    #$3b,d0
  47.     trap    #15
  48.     tst.l    d0
  49.     beq    joydrv_sts_1
  50.     movea.l    d0,a1
  51.     moveq.l    #$84,d0
  52.     trap    #15
  53.     cmpi.l    #'JOYD',d0
  54.     bne    joydrv_sts_1
  55.     moveq.l    #$83,d0
  56.     trap    #15
  57.     cmpi.w    #'RV',d0
  58.     bne    joydrv_sts_1
  59.     moveq.l    #0,d0                    * 常駐している
  60.     rts
  61. joydrv_sts_1:
  62.     moveq.l    #$fd,d0                    * 常駐していない
  63.     rts
  64.  
  65. get_analog_data:
  66.     bsr    joydrv_sts                * 常駐状態取得
  67.     tst.l    d0
  68.     bmi    parm_set
  69.     move.l    $c(a7),d3                * ジョイスティック番号取得
  70.     subq.l    #1,d3
  71.     movea.l    $16(a7),a1                * データ格納アドレス取得
  72.     moveq.l    #$08,d2
  73.     move.w    #$ff00,d1
  74.     moveq.l    #$3b,d0
  75.     trap    #15
  76.     bra    parm_set
  77.  
  78. get_joy_mtap:
  79.     bsr    joydrv_sts                * 常駐状態取得
  80.     tst.l    d0
  81.     bmi    parm_set
  82.     move.w    #$ff00,d1
  83.     moveq.l    #$10,d2
  84.     moveq.l    #$ff,d3
  85.     moveq.l    #$3b,d0
  86.     trap    #15
  87.     ext.l    d0                    * マルチタップ判定状態
  88.     bra    parm_set
  89.  
  90. get_joy_bitcnv:
  91.     bsr    joydrv_sts                * 常駐状態取得
  92.     tst.l    d0
  93.     bmi    parm_set
  94.     move.l    $c(a7),d4                * ジョイスティック番号取得
  95.     subq.l    #1,d4
  96.     moveq.l    #$ff,d3
  97.     moveq.l    #$11,d2
  98.     move.w    #$ff00,d1
  99.     moveq.l    #$3b,d0
  100.     trap    #15
  101.     ext.l    d0                    * ビット変換モード状態
  102.     bra    parm_set
  103.  
  104. get_joy_bitdat:
  105.     bsr    joydrv_sts                * 常駐状態取得
  106.     tst.l    d0
  107.     bmi    parm_set
  108.     move.l    $c(a7),d4                * ジョイスティック番号取得
  109.     movea.l    $16(a7),a1                * 変換データ格納アドレス取得
  110.     subq.l    #1,d4
  111.     moveq.l    #$ff,d3
  112.     moveq.l    #$12,d2
  113.     move.w    #$ff00,d1
  114.     moveq.l    #$3b,d0
  115.     trap    #15
  116.     bra    parm_set
  117.  
  118. get_joy_out:
  119.     bsr    joydrv_sts                * 常駐状態取得
  120.     tst.l    d0
  121.     bmi    parm_set
  122.     move.w    #$ff00,d1
  123.     moveq.l    #$13,d2
  124.     moveq.l    #$ff,d3
  125.     moveq.l    #$3b,d0
  126.     trap    #15
  127.     ext.l    d0                    * マルチタップ判定状態
  128.     bra    parm_set
  129.  
  130. get_tap_maxnum:
  131.     bsr    joydrv_sts                * 常駐状態取得
  132.     tst.l    d0
  133.     bmi    parm_set
  134.     move.w    #$ff00,d1
  135.     moveq.l    #$15,d2
  136.     moveq.l    #$ff,d3
  137.     moveq.l    #$3b,d0
  138.     trap    #15
  139.     ext.l    d0
  140.     bra    parm_set
  141.  
  142. get_plus_emu:
  143.     bsr    joydrv_sts                * 常駐状態取得
  144.     tst.l    d0
  145.     bmi    parm_set
  146.     move.l    $c(a7),d4                * ジョイスティック番号取得
  147.     subq.l    #1,d4
  148.     move.w    #$ff00,d1
  149.     moveq.l    #$16,d2
  150.     moveq.l    #$ff,d3
  151.     moveq.l    #$3b,d0
  152.     trap    #15
  153.     ext.l    d0
  154.     bra    parm_set
  155.  
  156. get_plus_thres:
  157.     bsr    joydrv_sts                * 常駐状態取得
  158.     tst.l    d0
  159.     bmi    parm_set
  160.     move.l    $c(a7),d4                * ジョイスティック番号取得
  161.     subq.l    #1,d4
  162.     move.w    #$ff00,d1
  163.     moveq.l    #$17,d2
  164.     moveq.l    #$ff,d3
  165.     moveq.l    #$3b,d0
  166.     trap    #15
  167.     ext.l    d0
  168.     bra    parm_set
  169.  
  170. get_stasel_mode:
  171.     bsr    joydrv_sts                * 常駐状態取得
  172.     tst.l    d0
  173.     bmi    parm_set
  174.     move.l    $c(a7),d4                * ジョイスティック番号取得
  175.     subq.l    #1,d4
  176.     move.w    #$ff00,d1
  177.     moveq.l    #$18,d2
  178.     moveq.l    #$ff,d3
  179.     moveq.l    #$3b,d0
  180.     trap    #15
  181.     ext.l    d0
  182.     bra    parm_set
  183.  
  184. get_lnsha_mode:
  185.     bsr    joydrv_sts                * 常駐状態取得
  186.     tst.l    d0
  187.     bmi    parm_set
  188.     move.l    $c(a7),d4                * ジョイスティック番号取得
  189.     subq.l    #1,d4
  190.     move.l    $16(a7),d5                * ビット番号取得
  191.     move.w    #$ff00,d1
  192.     moveq.l    #$19,d2
  193.     moveq.l    #$ff,d3
  194.     moveq.l    #$3b,d0
  195.     trap    #15
  196.     ext.l    d0
  197.     movea.l    $20(a7),a1                * ON回数格納アドレス
  198.     moveq.l    #0,d3
  199.     move.w    d0,d3
  200.     lsr.w    #8,d3
  201.     move.l    d3,(a1)
  202.     movea.l    $2a(a7),a1                * OFF回数格納アドレス
  203.     moveq.l    #0,d3
  204.     move.b    d0,d3
  205.     move.l    d3,(a1)
  206.     bra    parm_set
  207.  
  208. set_joy_mtap:
  209.     bsr    joydrv_sts                * 常駐状態取得
  210.     tst.l    d0
  211.     bmi    parm_set
  212.     move.w    #$ff00,d1
  213.     moveq.l    #$10,d2
  214.     move.l    $c(a7),d3                * 設定状態
  215.     moveq.l    #$3b,d0
  216.     trap    #15
  217.     ext.l    d0                    * マルチタップ判定状態
  218.     bra    parm_set
  219.  
  220. set_joy_bitcnv:
  221.     bsr    joydrv_sts                * 常駐状態取得
  222.     tst.l    d0
  223.     bmi    parm_set
  224.     move.l    $c(a7),d4                * ジョイスティック番号取得
  225.     subq.l    #1,d4
  226.     move.l    $16(a7),d3                * 設定状態
  227.     moveq.l    #$11,d2
  228.     move.w    #$ff00,d1
  229.     moveq.l    #$3b,d0
  230.     trap    #15
  231.     ext.l    d0                    * ビット変換モード状態
  232.     bra    parm_set
  233.  
  234. set_joy_bitdat:
  235.     bsr    joydrv_sts                * 常駐状態取得
  236.     tst.l    d0
  237.     bmi    parm_set
  238.     move.l    $c(a7),d4                * ジョイスティック番号取得
  239.     movea.l    $16(a7),a1                * 変換データ格納アドレス取得
  240.     subq.l    #1,d4
  241.     moveq.l    #0,d3
  242.     moveq.l    #$12,d2
  243.     move.w    #$ff00,d1
  244.     moveq.l    #$3b,d0
  245.     trap    #15
  246.     bra    parm_set
  247.  
  248. set_joy_out:
  249.     bsr    joydrv_sts                * 常駐状態取得
  250.     tst.l    d0
  251.     bmi    parm_set
  252.     move.w    #$ff00,d1
  253.     moveq.l    #$13,d2
  254.     move.l    $c(a7),d3                * 設定状態
  255.     moveq.l    #$3b,d0
  256.     trap    #15
  257.     ext.l    d0                    * マルチタップ判定状態
  258.     bra    parm_set
  259.  
  260. set_tap_maxnum:
  261.     bsr    joydrv_sts                * 常駐状態取得
  262.     tst.l    d0
  263.     bmi    parm_set
  264.     move.w    #$ff00,d1
  265.     moveq.l    #$15,d2
  266.     move.l    $c(a7),d3                * 設定状態
  267.     moveq.l    #$3b,d0
  268.     trap    #15
  269.     ext.l    d0
  270.     bra    parm_set
  271.  
  272. set_plus_emu:
  273.     bsr    joydrv_sts                * 常駐状態取得
  274.     tst.l    d0
  275.     bmi    parm_set
  276.     move.l    $c(a7),d4                * ジョイスティック番号取得
  277.     subq.l    #1,d4
  278.     move.l    $16(a7),d3
  279.     move.w    #$ff00,d1
  280.     moveq.l    #$16,d2
  281.     moveq.l    #$3b,d0
  282.     trap    #15
  283.     ext.l    d0
  284.     bra    parm_set
  285.  
  286. set_plus_thres:
  287.     bsr    joydrv_sts                * 常駐状態取得
  288.     tst.l    d0
  289.     bmi    parm_set
  290.     move.l    $c(a7),d4                * ジョイスティック番号取得
  291.     subq.l    #1,d4
  292.     move.l    $16(a7),d3
  293.     move.w    #$ff00,d1
  294.     moveq.l    #$17,d2
  295.     moveq.l    #$3b,d0
  296.     trap    #15
  297.     ext.l    d0
  298.     bra    parm_set
  299.  
  300. set_stasel_mode:
  301.     bsr    joydrv_sts                * 常駐状態取得
  302.     tst.l    d0
  303.     bmi    parm_set
  304.     move.l    $c(a7),d4                * ジョイスティック番号取得
  305.     subq.l    #1,d4
  306.     move.l    $16(a7),d3                * 設定状態
  307.     move.w    #$ff00,d1
  308.     moveq.l    #$18,d2
  309.     moveq.l    #$3b,d0
  310.     trap    #15
  311.     ext.l    d0
  312.     bra    parm_set
  313.  
  314. set_lnsha_mode:
  315.     bsr    joydrv_sts                * 常駐状態取得
  316.     tst.l    d0
  317.     bmi    parm_set
  318.     move.l    $c(a7),d4                * ジョイスティック番号取得
  319.     subq.l    #1,d4
  320.     move.l    $16(a7),d5                * ビット番号取得
  321.     moveq.l    #0,d3
  322.     move.b    $20+3(a7),d3                * ON回数取得
  323.     lsl.w    #8,d3
  324.     move.b    $2a+3(a7),d3                * OFF回数取得
  325.     move.w    #$ff00,d1
  326.     moveq.l    #$19,d2
  327.     moveq.l    #$3b,d0
  328.     trap    #15
  329.     ext.l    d0
  330.     bra    parm_set
  331.  
  332. read_ps_memc:
  333.     bsr    joydrv_sts                * 常駐状態取得
  334.     tst.l    d0
  335.     bmi    parm_set
  336.     move.w    #$ff00,d1
  337.     moveq.l    #$20,d2
  338.     move.l    $c(a7),d3                * ポート番号
  339.     subq.l    #1,d3
  340.     move.l    $16(a7),d4                * 転送開始フレーム番号
  341.     move.l    $20(a7),d5                * 転送フレーム数-1
  342.     movea.l    $2a(a7),a1                * データアドレス
  343.     moveq.l    #$3b,d0
  344.     trap    #15
  345.     bra    parm_set
  346.  
  347. write_ps_memc:
  348.     bsr    joydrv_sts                * 常駐状態取得
  349.     tst.l    d0
  350.     bmi    parm_set
  351.     move.w    #$ff00,d1
  352.     moveq.l    #$21,d2
  353.     move.l    $c(a7),d3                * ポート番号
  354.     subq.l    #1,d3
  355.     move.l    $16(a7),d4                * 転送開始フレーム番号
  356.     move.l    $20(a7),d5                * 転送フレーム数-1
  357.     movea.l    $2a(a7),a1                * データアドレス
  358.     moveq.l    #$3b,d0
  359.     trap    #15
  360.     bra    parm_set
  361.  
  362. ctrl_ps_motor:
  363.     bsr    joydrv_sts                * 常駐状態取得
  364.     tst.l    d0
  365.     bmi    parm_set
  366.     move.l    $c(a7),d3                * ジョイスティック番号取得
  367.     subq.l    #1,d3
  368.     move.l    $16(a7),d4                * コントロールステータス取得
  369.     move.l    $20(a7),d5                * 第二モーター強弱値取得
  370.     move.w    #$ff00,d1
  371.     moveq.l    #$22,d2
  372.     moveq.l    #$3b,d0
  373.     trap    #15
  374. parm_set:
  375.     lea.l    RET_PARM_TBL(pc),a0        * 戻り値エリア
  376.     clr.w    (a0)
  377.     move.l    d0,6(a0)            * 結果格納
  378.     moveq.l    #0,d0                * 正常終了
  379.     rts
  380.  
  381. RET_PARM_TBL:
  382.     .dc.w    0
  383.     .dc.l    0,0
  384.  
  385. PARM_TBL:
  386.     .dc.l    GET_JOY_DATA_PARM
  387.     .dc.l    GET_JOYDRV_PARM
  388.     .dc.l    GET_ANALOG_DATA_PARM
  389.     .dc.l    GET_JOY_MTAP_PARM
  390.     .dc.l    GET_JOY_BITCNV_PARM
  391.     .dc.l    GET_JOY_BITDAT_PARM
  392.     .dc.l    GET_JOY_OUT_PARM
  393.     .dc.l    GET_TAP_MAXNUM_PARM
  394.     .dc.l    GET_PLUS_EMU_PARM
  395.     .dc.l    GET_PLUS_THRES_PARM
  396.     .dc.l    GET_STASEL_MODE_PARM
  397.     .dc.l    GET_LNSHA_MODE_PARM
  398.     .dc.l    SET_JOY_MTAP_PARM
  399.     .dc.l    SET_JOY_BITCNV_PARM
  400.     .dc.l    SET_JOY_BITDAT_PARM
  401.     .dc.l    SET_JOY_OUT_PARM
  402.     .dc.l    SET_TAP_MAXNUM_PARM
  403.     .dc.l    SET_PLUS_EMU_PARM
  404.     .dc.l    SET_PLUS_THRES_PARM
  405.     .dc.l    SET_STASEL_MODE_PARM
  406.     .dc.l    SET_LNSHA_MODE_PARM
  407.     .dc.l    READ_PS_MEMC_PARM
  408.     .dc.l    WRITE_PS_MEMC_PARM
  409.     .dc.l    CTRL_PS_MOTOR_PARM
  410.  
  411. GET_JOY_DATA_PARM:
  412.     .dc.w    $0002,$8001
  413. GET_JOYDRV_PARM:
  414.     .dc.w    $8001
  415. GET_ANALOG_DATA_PARM:
  416.     .dc.w    $0002,$0012,$8001
  417. GET_JOY_MTAP_PARM:
  418.     .dc.w    $8001
  419. GET_JOY_BITCNV_PARM:
  420.     .dc.w    $0002,$8001
  421. GET_JOY_BITDAT_PARM:
  422.     .dc.w    $0002,$0012,$8001
  423. GET_JOY_OUT_PARM:
  424.     .dc.w    $8001
  425. GET_TAP_MAXNUM_PARM:
  426.     .dc.w    $8001
  427. GET_PLUS_EMU_PARM:
  428.     .dc.w    $0002,$8001
  429. GET_PLUS_THRES_PARM:
  430.     .dc.w    $0002,$8001
  431. GET_STASEL_MODE_PARM:
  432.     .dc.w    $0002,$8001
  433. GET_LNSHA_MODE_PARM:
  434.     .dc.w    $0002,$0002,$0012,$0012,$8001
  435. SET_JOY_MTAP_PARM:
  436.     .dc.w    $0002,$8001
  437. SET_JOY_BITCNV_PARM:
  438.     .dc.w    $0002,$0002,$8001
  439. SET_JOY_BITDAT_PARM:
  440.     .dc.w    $0002,$0012,$8001
  441. SET_JOY_OUT_PARM:
  442.     .dc.w    $0002,$8001
  443. SET_TAP_MAXNUM_PARM:
  444.     .dc.w    $0002,$8001
  445. SET_PLUS_EMU_PARM:
  446.     .dc.w    $0002,$0002,$8001
  447. SET_PLUS_THRES_PARM:
  448.     .dc.w    $0002,$0002,$8001
  449. SET_STASEL_MODE_PARM:
  450.     .dc.w    $0002,$0002,$8001
  451. SET_LNSHA_MODE_PARM:
  452.     .dc.w    $0002,$0002,$0002,$0002,$8001
  453. READ_PS_MEMC_PARM:
  454.     .dc.w    $0002,$0002,$0002,$0014,$8001
  455. WRITE_PS_MEMC_PARM:
  456.     .dc.w    $0002,$0002,$0002,$0014,$8001
  457. CTRL_PS_MOTOR_PARM:
  458.     .dc.w    $0002,$0002,$0002,$8001
  459.  
  460. EXEC_TBL:
  461.     .dc.l    get_joy_data                * 関数名(ジョイスティック状態の取得)
  462.     .dc.l    get_joydrv                * 関数名(ドライバ常駐状態の取得)
  463.     .dc.l    get_analog_data                * 関数名(アナログスティック読み込み)
  464.     .dc.l    get_joy_mtap                * 関数名(マルチタップ判定状態の取得)
  465.     .dc.l    get_joy_bitcnv                * 関数名(ビット変換モード状態の取得)
  466.     .dc.l    get_joy_bitdat                * 関数名(ビット変換データの取得)
  467.     .dc.l    get_joy_out                * 関数名(出力モードの取得)
  468.     .dc.l    get_tap_maxnum                * 関数名(マルチタップ使用時ジョイスティック数の取得)
  469.     .dc.l    get_plus_emu                * 関数名(アナログスティック十字キーエミュレート変換の取得)
  470.     .dc.l    get_plus_thres                * 関数名(アナログスティック十字キーエミュレートしきい値の取得)
  471.     .dc.l    get_stasel_mode                * 関数名(START,SELECTボタンモードの取得)
  472.     .dc.l    get_lnsha_mode                * 関数名(連射モードの取得)
  473.     .dc.l    set_joy_mtap                * 関数名(マルチタップ判定状態の設定)
  474.     .dc.l    set_joy_bitcnv                * 関数名(ビット変換モード状態の設定)
  475.     .dc.l    set_joy_bitdat                * 関数名(ビット変換データの設定)
  476.     .dc.l    set_joy_out                * 関数名(出力モードの設定)
  477.     .dc.l    set_tap_maxnum                * 関数名(マルチタップ使用時ジョイスティック数の設定)
  478.     .dc.l    set_plus_emu                * 関数名(アナログスティック十字キーエミュレート変換の設定)
  479.     .dc.l    set_plus_thres                * 関数名(アナログスティック十字キーエミュレートしきい値の設定)
  480.     .dc.l    set_stasel_mode                * 関数名(START,SELECTボタンモードの設定)
  481.     .dc.l    set_lnsha_mode                * 関数名(連射モードの設定)
  482.     .dc.l    read_ps_memc                * 関数名(プレイステーションメモリカードの読み込み)
  483.     .dc.l    write_ps_memc                * 関数名(プレイステーションメモリカードの書き込み)
  484.     .dc.l    ctrl_ps_motor                * 関数名(プレイステーション振動パッドコントロール)
  485.  
  486. TOKEN_TBL:
  487.     .dc.b    'get_joy_data',0            * 関数名(ジョイスティック状態の取得)
  488.     .dc.b    'get_joydrv',0                * 関数名(ドライバ常駐状態の取得)
  489.     .dc.b    'get_analog_data',0            * 関数名(アナログスティック読み込み)
  490.     .dc.b    'get_joy_mtap',0            * 関数名(マルチタップ判定状態の取得)
  491.     .dc.b    'get_joy_bitcnv',0            * 関数名(ビット変換モード状態の取得)
  492.     .dc.b    'get_joy_bitdat',0            * 関数名(ビット変換データの取得)
  493.     .dc.b    'get_joy_out',0                * 関数名(出力モードの取得)
  494.     .dc.b    'get_tap_maxnum',0            * 関数名(マルチタップ使用時ジョイスティック数の取得)
  495.     .dc.b    'get_plus_emu',0            * 関数名(アナログスティック十字キーエミュレート変換の取得)
  496.     .dc.b    'get_plus_thres',0            * 関数名(アナログスティック十字キーエミュレートしきい値の取得)
  497.     .dc.b    'get_stasel_mode',0            * 関数名(START,SELECTボタンモードの取得)
  498.     .dc.b    'get_lnsha_mode',0            * 関数名(連射モードの取得)
  499.     .dc.b    'set_joy_mtap',0            * 関数名(マルチタップ判定状態の設定)
  500.     .dc.b    'set_joy_bitcnv',0            * 関数名(ビット変換モード状態の設定)
  501.     .dc.b    'set_joy_bitdat',0            * 関数名(ビット変換データの設定)
  502.     .dc.b    'set_joy_out',0                * 関数名(出力モードの設定)
  503.     .dc.b    'set_tap_maxnum',0            * 関数名(マルチタップ使用時ジョイスティック数の設定)
  504.     .dc.b    'set_plus_emu',0            * 関数名(アナログスティック十字キーエミュレート変換の設定)
  505.     .dc.b    'set_plus_thres',0            * 関数名(アナログスティック十字キーエミュレートしきい値の設定)
  506.     .dc.b    'set_stasel_mode',0            * 関数名(START,SELECTボタンモードの設定)
  507.     .dc.b    'set_lnsha_mode',0            * 関数名(連射モードの設定)
  508.     .dc.b    'read_ps_memc',0            * 関数名(プレイステーションメモリカードの読み込み)
  509.     .dc.b    'write_ps_memc',0            * 関数名(プレイステーションメモリカードの書き込み)
  510.     .dc.b    'ctrl_ps_motor',0            * 関数名(プレイステーション振動パッドコントロール)
  511.     .dc.b    0
  512.  
  513. .data
  514. .end
  515.